package com.IO.practice;

import java.io.*;

public class D01CopyMK {
    public static void main(String[] args) throws IOException {
        /*
         * 拷贝一个文件夹，考虑子文件夹
         * */
        // 创建文件对象
        File fis = new File("D:\\TestFile\\IO");
        File file = new File("D:\\TestFile\\copys");
        copyFile(fis, file);
    }
    
    public static void copyFile(File old, File newFile) throws IOException {
        newFile.mkdirs();
        // 进入数据源
        File[] files = old.listFiles();
        if (files == null) return;
        // 遍历数组
        for (File file : files) {
            if (file.isDirectory()) {
                // 创建文件夹
                String name = old.getName();
                copyFile(file, new File(newFile + "\\" + name));
            } else {
                // 不是文件夹 执行拷贝
                // 创建文件输入流对象
                FileInputStream fis = new FileInputStream(file);
                // 创建文件输出流对象
                FileOutputStream fos = new FileOutputStream(new File(newFile, file.getName()));
                // 创建字节数组
                byte[] chars = new byte[1024 * 1024 * 5]; // 5M
                int len;
                while ((len = fis.read(chars)) != -1) {
                    fos.write(chars, 0, len);
                }
                fos.close();
                fis.close();
            }
        }
        
    }
}
